/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;

import com.akcess.vo.*;
import com.akcess.exception.*;
import manejadores.*;
import java.util.*;
import java.sql.*;
import java.sql.Date;

/**
 *
 * @author Alejandro
 */
public class GestionarRecursos_Humanos extends HttpServlet {

    private static final String dirBASE = "jsp/RecursosHumanos";

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet GestionarRecursos_Humanos</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet GestionarRecursos_Humanos at " + request.getContextPath () + "</h1>");
            out.println("</body>");
            out.println("</html>");
             */
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String accion = request.getParameter("hacer");
        request.setAttribute("modulo", "Recursos Humanos");
        if (accion.equals("Agregar")) {
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/AgregarRecursoHumano.jsp");
            dispatcher.forward(request, response);
        }
        if (accion.equals("opAgregar")) {
            this.CrearRecursoHumano(request, response);
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarRecursosHumanos.jsp");
            dispatcher.forward(request, response);
        }
        if (accion.equals("Listar")) {
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarRecursosHumanos.jsp");
            dispatcher.forward(request, response);
        }
        if (accion.equals("Modificar")) {
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarModificarRecursosHumanos.jsp");
            dispatcher.forward(request, response);
        }
        if (accion.equals("Borrar")) {
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarBorrarRecursosHumanos.jsp");
            dispatcher.forward(request, response);
        }
        if (accion.equals("opModificar")) {
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ModificarRecursoHumano.jsp");
            dispatcher.forward(request, response);
        }
        if (accion.equals("opVer")) {
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/VerRecursoHumano.jsp");
            dispatcher.forward(request, response);
        }
        if (accion.equals("modificacion")) {
            this.ModificarRecursoHumano(request, response);
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarModificarRecursosHumanos.jsp");
            dispatcher.forward(request, response);
        }
        if (accion.equals("opBorrar")) {
            this.BorrarRecursoHumano(request, response); 
            RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE+"/ListarBorrarRecursosHumanos.jsp");
            dispatcher.forward(request, response);            
        }
    }

    /** 
     * Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    /**
     * Este metodo nos permite Agregar o Crear un nuevo Recurso Humano dentro del sistema. Del request obtenemos todos los valores ingresados en el 
     * formulario para poder crear el Recurso Humano, los cuales son: Nombre, Apellido, Celular, Nro. Doc. y Observacion.
     * @param request
     * @param response
     * @throws javax.servlet.ServletException
     * @throws java.io.IOException
     */
    protected void CrearRecursoHumano(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            Recurso_humano recursoHumano = new Recurso_humano();
            Recurso recurso = new Recurso();
            recursoHumano.setNombre(request.getParameter("Nombre"));
            recursoHumano.setApellido(request.getParameter("Apellido"));
            recursoHumano.setNumcelular(request.getParameter("Celular"));
            recursoHumano.setCi_num(request.getParameter("Num_Doc"));
            recurso.setObservacion(request.getParameter("Observacion"));
            recurso.setBorrado(false);
            recurso.setDisponible(true);
            Date fecha = new Date(System.currentTimeMillis());            
            recurso.setFechacreacion(fecha);
            

            HttpSession session = request.getSession(false);
            if (session != null) {
                Connection cone;
                cone = (Connection) session.getAttribute("conexion");
                if (cone != null) {
                    ManejadorRecursosHumanos manejadorRecurso = new ManejadorRecursosHumanos(cone);
                    manejadorRecurso.CrearRecursoHumano(recurso,recursoHumano);
                }
            }
        } catch (Recurso_humanoException ex) {
            ex.printStackTrace();
        }
    }

    /**
     * Con este metodo podremos realizar las modificaciones de manera permanente que fueron realizadas sobre un
     * Recurso Humano en el formulario dado. Del request obtenemos todos los valores nuevos ingresados en el 
     * formulario para poder modificar el Recurso Humano, los cuales son: Nombre, Apellido, Celular, Nro. Doc. y Observacion.
     * Del request tambien se obtiene el id del Recurso Humano que se esta modificando.
     * @param request
     * @param response
     * @throws javax.servlet.ServletException
     * @throws java.io.IOException
     */
    protected void ModificarRecursoHumano(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            Recurso_humano recursoHumano = new Recurso_humano();
            recursoHumano.setNombre(request.getParameter("Nombre"));
            recursoHumano.setApellido(request.getParameter("Apellido"));
            recursoHumano.setNumcelular(request.getParameter("Celular"));
            recursoHumano.setCi_num(request.getParameter("Num_Doc"));
            int idRecurso = Integer.parseInt(request.getParameter("id"));
            recursoHumano.setId_recurso(idRecurso);
            
            Recurso recurso = new Recurso();            
            recurso.setObservacion(request.getParameter("Observacion"));
            recurso.setDisponible(Boolean.parseBoolean(request.getParameter("Disponible")));
            recurso.setId_recurso((long)idRecurso);
            

            HttpSession session = request.getSession(false);
            if (session != null) {
                Connection cone;
                cone = (Connection) session.getAttribute("conexion");
                if (cone != null) {
                    ManejadorRecursosHumanos manejadorRecurso = new ManejadorRecursosHumanos(cone);
                    manejadorRecurso.ModificarRecursoHumano(recurso,recursoHumano);
                }
            }
        } catch (Recurso_humanoException ex) {
            ex.printStackTrace();
        }

    }
    
    /**
     * Con este metodo podremos borrar un Recurso Humano, no logica sino que fisicamente del sistema. A partir del request
     * obtenemos el id de la Ubicacion que sera borrada. Sera borrado el Recurso Humano si es que no existe otra entidad referenciandola.
     * @param request
     * @param response
     * @throws javax.servlet.ServletException
     * @throws java.io.IOException
     */
    protected void BorrarRecursoHumano(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            
            int idRecurso = Integer.parseInt(request.getParameter("id"));            
            HttpSession session = request.getSession(false);
            
            if (session != null) {
                Connection cone;
                cone = (Connection) session.getAttribute("conexion");
                if (cone != null) {
                    ManejadorRecursosHumanos manejadorRecurso = new ManejadorRecursosHumanos(cone);
                    manejadorRecurso.BorrarRecursoHumano(idRecurso);
                }
            }
        } catch (RecursoException ex) {
            ex.printStackTrace();
        }

    }
    
}
